package com.ydc.ln.tutorial.mail.oracle;
//package demo.javamail.oracle.util;
//
//import java.io.BufferedInputStream;
//import java.io.FileInputStream;
//import java.io.InputStream;
//import java.util.Properties;
//
//import javax.mail.FetchProfile;
//import javax.mail.Folder;
//import javax.mail.Message;
//import javax.mail.MessagingException;
//import javax.mail.Part;
//import javax.mail.Session;
//import javax.mail.Store;
//import javax.mail.URLName;
//import javax.mail.event.StoreEvent;
//import javax.mail.event.StoreListener;
//import javax.mail.internet.ContentType;
//import javax.mail.internet.MimeMessage;
//import javax.mail.internet.ParseException;
//
//public class msgshow {
//	static String protocol;
//	static String host = null;
//	static String user = null;
//	static String password = null;
//	static String mbox = null;
//	static String url = null;
//	static int port = -1;
//	static boolean verbose = false;
//	static boolean debug = false;
//	static boolean showStructure = false;
//	static boolean showMessage = false;
//	static boolean showAlert = false;
//	static boolean saveAttachments = false;
//	static int attnum = 1;
//
//	public static void main(String argv[]) {
//		int msgnum = -1;
//		int optind;
//		InputStream msgStream = System.in;
//		for (optind = 0; optind < argv.length; optind++) {
//			if (argv[optind].equals("-T")) {
//				protocol = argv[++optind];
//			} else if (argv[optind].equals("-H")) {
//				host = argv[++optind];
//			} else if (argv[optind].equals("-U")) {
//				user = argv[++optind];
//			} else if (argv[optind].equals("-P")) {
//				password = argv[++optind];
//			} else if (argv[optind].equals("-v")) {
//				verbose = true;
//			} else if (argv[optind].equals("-D")) {
//				debug = true;
//			} else if (argv[optind].equals("-f")) {
//				mbox = argv[++optind];
//			} else if (argv[optind].equals("-L")) {
//				url = argv[++optind];
//			} else if (argv[optind].equals("-p")) {
//				port = Integer.parseInt(argv[++optind]);
//			} else if (argv[optind].equals("-s")) {
//				showStructure = true;
//			} else if (argv[optind].equals("-S")) {
//				saveAttachments = true;
//			} else if (argv[optind].equals("-m")) {
//				showMessage = true;
//			} else if (argv[optind].equals("-a")) {
//				showAlert = true;
//			} else if (argv[optind].equals("--")) {
//				optind++;
//				break;
//			} else if (argv[optind].startsWith("-")) {
//				System.out
//						.println("Usage: msgshow [-L url] [-T protocol] [-H host] [-p port] [-U user]");
//				System.out
//						.println("\t[-P password] [-f mailbox] [msgnum] [-v] [-D] [-s] [-S] [-a]");
//				System.out
//						.println("or      msgshow -m [-v] [-D] [-s] [-S] [-f msg-file]");
//				System.exit(1);
//			} else {
//				break;
//			}
//		}
//
//		try {
//			if (optind < argv.length) {
//				msgnum = Integer.parseInt(argv[optind]);
//
//				// Get a Properties object
//				Properties props = System.getProperties();
//
//				// Get a Session object
//				Session session = Session.getInstance(props, null);
//				session.setDebug(debug);
//			}
//			if (showMessage) {
//				MimeMessage msg;
//				if (mbox != null)
//					msg = new MimeMessage(session, new BufferedInputStream(
//							new FileInputStream(mbox)));
//				else
//					msg = new MimeMessage(session, msgStream);
//				dumpPart(msg);
//				System.exit(0);
//			}
//
//			// Get a Store object
//			Store store = null;
//			if (url != null) {
//				URLName urln = new URLName(url);
//				store = session.getStore(urln);
//				if (showAlert) {
//					store.addStoreListener(new StoreListener() {
//						public void notification(StoreEvent e) {
//							String s;
//							if (e.getMessageType() == StoreEvent.ALERT)
//								s = "ALERT: ";
//							else
//								s = "NOTICE: ";
//							System.out.println(s + e.getMessage());
//						}
//					});
//				}
//				store.connect();
//			} else {
//				if (protocol != null)
//					store = session.getStore(protocol);
//				else
//					store = session.getStore();
//
//				// Connect
//				if (host != null || user != null || password != null)
//					store.connect(host, port, user, password);
//				else
//					store.connect();
//			}
//
//			// Open the Folder
//
//			Folder folder = store.getDefaultFolder();
//			if (folder == null) {
//				System.out.println("No default folder");
//				System.exit(1);
//			}
//
//			if (mbox == null) {
//				mbox = "INBOX";
//			}
//			folder = folder.getFolder(mbox);
//			if (folder == null) {
//				System.out.println("Invalid folder");
//				System.exit(1);
//			}
//			// try to open read/write and if that fails try read-only
//			try {
//				folder.open(Folder.READ_WRITE);
//			} catch (MessagingException ex) {
//				folder.open(Folder.READ_ONLY);
//			}
//			int totalMessages = folder.getMessageCount();
//
//			if (totalMessages == 0) {
//				System.out.println("Empty folder");
//				folder.close(false);
//				store.close();
//				System.exit(1);
//			}
//
//			if (verbose) {
//				int newMessages = folder.getNewMessageCount();
//				System.out.println("Total messages = " + totalMessages);
//				System.out.println("New messages = " + newMessages);
//				System.out.println("-------------------------------");
//			}
//
//			if (msgnum == -1) {
//				// Attributes & Flags for all messages..
//				Message[] msgs = folder.getMessages();
//
//				// Use a suitable FetchProfile
//				FetchProfile fp = new FetchProfile();
//				fp.add(FetchProfile.Item.ENVELOPE);
//				fp.add(FetchProfile.Item.FLAGS);
//				fp.add("X-Mailer");
//				folder.fetch(msgs, fp);
//
//				for (int i = 0; i < msgs.length; i++) {
//					System.out.println("==================================");
//					System.out.println("MESSAGE #" + (I + 1) + ":");
//					dumpEnvelope(msgs[i]);
//				}
//			} else {
//				System.out.println("Getting message number: " + msgnum);
//				Message m = null;
//
//				try {
//					m = folder.getMessage(msgnum);
//					dumpPart(m);
//				} catch (IndexOutOfBoundsException iex) {
//					System.out.println("Message number out of range");
//				}
//			}
//
//			folder.close(false);
//			store.close();
//
//		} catch (Exception ex) {
//			System.out.println("Oops, got exception!" + ex.getMessage());
//			ex.printStackTrace();
//			System.exit(1);
//		}
//		System.exit(0);
//	}
//
//	public static void dumpPart(Part p) throws Exception {
//		if (p instanceof Message) {
//			dumpEnvelope((Message)p);
//		}
//		
//		/** Dump input stream ..
//		 	InputStream is = p.getInputStream();
//		 	// if "is" is not already buffered, wrap a BufferedInputStream around it
//		 	 if(!(is instanceof BufferedInputStream)) {
//		 	 	is = new BufferedInputStream(is);
//		 	 }
//		 	 int c;
//		 	 while((c = is.read()) != -1) {
//		 	 	System.out.write(c);
//		 	 }
//		 **/
//		String ct = p.getContentType();
//		try {
//			pr("CONTENT-TYPE: " + (new ContentType(ct)).toString());
//		} catch (ParseException pex) {
//			pr("BAD CONTENT-TYPE: " + ct);
//		}
//		String filename = p.getFileName();
//		if (filename != null) {
//			pr("FILENAME: " + filename);
//		}
//		
//	}
//}
